package org.fly.jingwei.service;

import org.fly.jingwei.bean.PageForBean;
import org.fly.jingwei.entity.UserGroupEntity;

import java.util.List;

/**
 * @author leo.jie (weixiao.me@aliyun.com)
 * @version 1.0
 * @organization bigdata
 * @website https://www.jielongping.com
 * @date 2020/5/29 11:08 下午
 * @since 1.0
 */
public interface UserGroupService {
    /**
     * 分页获取用户组
     *
     * @param start         分页开始
     * @param limit         分页大小
     * @param userGroupName 用户组名
     * @return 分页用户组实体
     */
    String getUserGroupByPage(int start, int limit, String userGroupName);

    /**
     * 判断用户组名是否存在
     *
     * @param name 用户组名
     * @return 存在的用户组名
     */
    String decideGroupNameExist(String name);

    /**
     * 添加用户组
     *
     * @param taskGroupNameArray
     * @param slaveIdArray
     * @param userGroupName
     * @param userGroupDesc
     */
    void addUserGroup(String[] taskGroupNameArray, String[] slaveIdArray, String userGroupName, String userGroupDesc);

    /**
     * 分配任务组之前的操作
     *
     * @param userGroupName
     * @return
     */
    String[] beforeAssignedTaskGroup(String userGroupName);

    /**
     * 分配节点之前的操作
     *
     * @param userGroupName
     * @return
     */
    String[] beforeAssignedSlave(String userGroupName);

    /**
     * 分配节点
     *
     * @param slaveIdArray
     * @param userGroupName
     */
    void assignedSlave(String[] slaveIdArray, String userGroupName);

    /**
     * 分配任务组
     *
     * @param taskGroupNameArray
     * @param userGroupName
     */
    void assignedTaskGroup(String[] taskGroupNameArray, String userGroupName);

    /**
     * 更新用户组
     *
     * @param userGroupId
     * @param userGroupName
     * @param userGroupDesc
     * @return
     */
    String updateUserGroup(Integer userGroupId, String userGroupName, String userGroupDesc);

    /**
     * 删除用户组
     *
     * @param userGroupName
     */
    void deleteUserGroup(String userGroupName);

    /**
     * 获取所有的用户组
     *
     * @return 所有用户组
     */
    List<UserGroupEntity> getAllUserGroup();

    /**
     * 查询用户组的总数量
     *
     * @param groupName 用户组名称
     * @return 所选条件下的用户组总数
     */
    Integer userGroupCount(String groupName);
}
